

;
(function($, window, document, undefined) {
	var isAdd = true,//是否新增状态
		aCG = [], //科目数组
		aClassroom = [], //教室数组
		aShowData = [],//回显的数据
		aClass = [], //班级数组
		aClassGroupSatff = [],//科组教职工综合表
		nNode;//节次
	$.extend({
		//初始化DOM
		initPage: function() {
			//获取科目表
			$.getClassGroupList();
			//获取年级列表
			$.getGradeList();	
			
//			//获取教室列表(包含行政班和非行政班)
//			$.getClassroomList();
			
//			//获取学校节课时，进而加载节次，老师和科组下拉菜单
//			$.getNode();
			

//			//走班课程表获取科组教职工综合表
//			$.goClass_get_classGroupSatff();
			
			
			
			
			//所有下拉框设置select
			$.allSelectChangeEvent();
				
//			//过滤老师列表
//			$.goClass_filterTeacherList();
			
			//监听科组切换，获取对应教师列表,过滤老师列表
			$.goClass_classGroupEvent();
			
			//监听年级列表change事件
			$.GradeListEvent();
									
			//监听教室列表切换
			$.classroomListEvent();
			
			//监听保存设置入口
			$.savePort();
			
//			//查询,显示课程表
//			$.showTable();
		},
		//获取学校节次,重新定义周和节之间的关系
		getNode: function() {
			fnAjax.method_4(
				url_join("schedule-v1/session"), {},
				"post",
				function(data) {
					console.log(data);
					if(data.data == 0){
						layer.alert("该学校还没配置课时的考勤时间，请在系统设置》考勤时间设置》课时设置 ，进行配置");			
						$("table").hide();
					}
					else{
						nNode = data.data;
						//定义走班节次渲染列表
						$.goClass_node(nNode);
					}
					
				}
			);
		},

//		//定义走班节次渲染列表
		goClass_node:function(n){
			$("#goClass tbody tr").remove();
			var th_len = $("#goClass thead th").length;
			var tds = "";
			for(var j=1;j<th_len;j++){
				tds += '<td class="td-goClass">'+
						'<p><b>科组</b>:<select class="classGroupList" style="width:100px"><option value="0">请选择科组</option></select></p>'+
						'<p><b>老师</b>:<select class="_teacherList" style="width:100px"><option value="0">请选择老师</option></select></p>'+
						'</td>';
			}			
			var trs = "";
			for(var i=0;i<n;i++){
				trs += '<tr class="text-c"><td class="td-node" data-node="'+ (i+1) +'">第'+ (i+1) +'节</td>'+ tds +'</tr>';
			}
			$("#goClass tbody").html(trs);
			$.goClass_addProp();
		},
		//走班表格主要单元配置节次和星期数据
		goClass_addProp:function(){
			$(".goClass .td-goClass").each(function(){
				$(this).attr({
					"data-node":$(this).siblings(".td-node").attr("data-node"),
					"data-week":$("#goClass thead th").eq($(this).index()).attr("data-week")
				});
			});
			//走班课程表加载科组列表（下拉菜单）
			$.goClass_getClassGroupList(aCG);
			
			//走班课程表加载对应的科组下面的老师列表
			$.goClass_getTeacherList();
			
			
		},
		//走班课程表加载对应的科组下面的老师列表
		goClass_getTeacherList:function(){
			//获取没有职务的老师列表
			$.goClass_noSatff_getTeacherList();
			
		},
		//获取没有职务的老师列表
		goClass_noSatff_getTeacherList:function(){
			fnAjax.method_4(
				url_join("common/staff/list"), {},
				"post",
				function(data) {
					console.log(data);
					if(data.data.length == 0){
						layer.alert("该学校还没初始化教职工数据，请在资料管理》教职工管理 ，创建教职工数据");			
						
					}else{
						$.each(data.data, function(k, e) {
							var options = '<option value="' + e.id + '" style="font-weight: normal;color: blue;" class="hide teacherOption">' + e.username + '</option>';
							$("._teacherList").append($(options));
						});
						
						//过滤老师列表
						$.goClass_filterTeacherList();
					}
					
				}
			);
		},
		
		//过滤老师列表
		goClass_filterTeacherList:function(){
			//查询,显示课程表
			$.showTable();
			
//			$.goClass_filterFuntion($(".classGroupList"),aClassGroupSatff);
			
		},
		//过滤老师列表函数
		goClass_filterFuntion:function(classGroupList_select,aClassGroupSatff){
			var _teacherList_select = classGroupList_select.parents(".td-goClass").find("._teacherList");
			_teacherList_select.find(".teacherOption").addClass("hide");
			if(aClassGroupSatff.length > 0){
				$.each(aClassGroupSatff, function(i,v) {
					if(classGroupList_select.val() == v.class_group_id){
						filterArr(v.staff_id,_teacherList_select.find("option"));
					}
				});
			}
			
			//深层过滤
			function filterArr(arr,obj){
				if(arr.length > 0){
					obj.each(function(i){
						var _this = $(this);
						$.each(arr, function(k,e) {
							if(_this.attr("value") == e){
								_this.removeClass("hide");
							}
						});
					});
				}
			}
			
			
		},
		//监听科组切换，获取对应教师列表
		goClass_classGroupEvent:function(){
			$("body").on("change",".classGroupList",function(){
				$.goClass_filterFuntion($(this),aClassGroupSatff);
				$(this).parents("td").find("._teacherList").val("0");
			});
		},		
		//走班课程表加载科组列表（下拉菜单）
		goClass_getClassGroupList:function(aCG){
			
			$.goClass_getSelectList(aCG, $(".classGroupList"));
			
		},
		//走班课程表获取科组教职工综合表
		goClass_get_classGroupSatff:function(){
			fnAjax.method_4(
				url_join("schedule-v2/staff"), {gid:$("#grade").val()},
				"post",
				function(data) {		
					console.log(data);
					$.each(data.data, function(i,v) {
						v.staff_id = JSON.parse(v.staff_id);
					});
					aClassGroupSatff = data.data;
					console.log(aClassGroupSatff);
					//获取学校节课时，进而加载节次，老师和科组下拉菜单
					$.getNode();
				}
			);
		},
		/*
		 返回列表，渲染为下拉菜单
		 @param aData {array} 列表数据
		 @param container {object} 下拉菜单select元素对象界节点  jq
		 * */		
		getSelectList: function(aData, container) {
			container.find("option").remove();
			$.each(aData, function(i, v) {
				var sOption = '<option value="' + v.id + '">' + v.name + '</option>';
				container.append($(sOption));
			});
		},
		//走班选修科组
		goClass_getSelectList: function(aData, container) {
			console.log("是否必修：",$("#classroom2").find("option:selected").attr("data-required"));
			container.find("option").remove();
			//加载必修选修课程表
			if($("#classroom2").find("option:selected").attr("data-required") == "true"){
				$.each(aData, function(i, v) {
					var sOption = '<option value="' + v.id + '">' + v.name + '</option>';
					container.append($(sOption));
				});
				
			}
//			加载选修课程表
			else{
				$.each(aData, function(i, v) {
					if(v.type == 0){
						var sOption = '<option value="' + v.id + '">' + v.name + '</option>';
						container.append($(sOption));
					}
				});
			}
			
		},
		//新增走班课程表（选修）
		goClass_table_create:function(){
			console.log($.goClass_table_getData());
			fnAjax.method_4(
				url_join("schedule-v2/create"),
				{
					gid:$("#grade").val(),
					classroom_id:$("#classroom2").val(),
					schedule_v2:$.goClass_table_getData()
				},
				"post",
				function(data){
					layer.msg("操作成功",{time:1000},function(){
						location.reload();
					});
				}
			);
		},
		//编辑走班课程表（选修）
		goClass_table_update:function(){
			var mainData = [];
			$(".changeTd").each(function(){
				mainData.push({
					"id":$(this).attr("data-id"),
					"class_group_id":$(this).find(".classGroupList").val(),
					"staff_id":$(this).find("._teacherList").val()
				});
			});
			setTimeout(function(){
				fnAjax.method_4(
					url_join("schedule-v2/update"),
					{
						gid:$("#grade").val(),
						classroom_id:$("#classroom2").val(),
						schedule_v2:mainData
					},
					"post",
					function(data){
						layer.msg("操作成功",{time:1000},function(){
							location.reload();
						});
					}
				);
			},200);
			
		},
		//获取走班课程表（选修）数据
		goClass_table_getData:function(){
			var mainData = [];
			$(".td-goClass").each(function(){
				mainData.push({
					"node":$(this).attr("data-node"),
					"day":$(this).attr("data-week"),
					"class_group_id":$(this).find(".classGroupList").val(),
					"staff_id":$(this).find("._teacherList").val()
				});
			});
			return mainData;
		},
		//获取年级列表
		getGradeList: function() {
			fnAjax.method_4(
				url_join("grade/list"), {},
				"post",
				function(data) {
					console.log(data);
					if(data.data.length > 0){						
						$("#grade").find("option").remove();
						$.each(data.data, function(i, v) {
							if(v.type == 1){
								var sOption = '<option value="' + v.id + '" data-type="' + v.type + '">' + v.name + '</option>';
								$("#grade").append($(sOption));
							}						
						});
	
						$("#grade").find("option:selected").attr("selected", "selected");
						if($("#grade option").length > 0){
							//获取教室列表(包含行政班和非行政班)
							$.getClassroomList();
							
							//走班课程表获取科组教职工综合表
							$.goClass_get_classGroupSatff();
						}else{
							layer.alert("该年级还没有初始化走班制年级数据，请到“资料管理》学校内部架构管理》年级列表” 模块，创建走班制年级数据！");
						}
						
					}
					else{
						layer.alert("该年级还没有初始化年级数据，请到“资料管理》学校内部架构管理》年级列表” 模块，创建年级数据！");
					}
				}
			);
		},
		//监听年级列表change事件
		GradeListEvent: function() {
			$("#grade").on("change", function() {
				//获取教室列表(包含行政班和非行政班)
				$.getClassroomList();
				
				//获取学校节课时，进而加载节次，老师和科组下拉菜单
				$.getNode();
				
//				//查询,显示课程表
//				$.showTable();
			});
		},
		//获取科目表
		getClassGroupList: function() {
			fnAjax.method_4(
				url_join("class-group/list"), {},
				"post",
				function(data) {
					console.log(data);
					if(data.data.length == 0){
						layer.alert("该学校还没初始化选修科组数据，请到“资料管理》学校内部架构管理》科组列表” 模块，创建科组数据！");
					}else{
						aCG = data.data;
					}
					
				}
			);
		},
		//获取教室列表(包含行政班和非行政班)
		getClassroomList: function() {
			if($("#grade").find("option").length == 0){
				layer.alert("该年级还没有初始化年级数据，请到“资料管理》学校内部架构管理》年级列表” 模块，创建年级数据！");	
				return false;
			}
			fnAjax.method_4(
				url_join("schedule-v2/room"), {gid:$("#grade").val()},
				"post",
				function(data) {
					console.log(data);
					if(data.data.length == 0){
						layer.alert("该学校还没有初始化教室数据，请到“资料管理》学校内部架构管理》教室列表” 模块，创建教室数据！");
						$("table").hide();
					}
					else{
						aClassroom = data.data;
						//渲染教室的下拉列表
						$.createClassroomList(data.data, $("#classroom2"));
					}
					
				}
			);
		},
		
		//渲染教室的下拉列表
		createClassroomList:function(aClassroom,container){
			container.find("option").remove();
			$.each(aClassroom, function(i, v) {
				var sOption = '<option value="' + v.id + '" data-required="'+ (v.required && v.required) +'" data-grade_id="'+ (v.grade_id && v.grade_id) +'" >' + v.name + (v.required ? '(绑定行政班'+ v.class_name +'班)' : '') + '</option>';
				container.append($(sOption));
			});
		},
		/*
		 获取教职工人员表
		 @param {object} oSelect 老师列表对象 DOM jq
		 * */
		getTeacherList: function(oSelect) {
			fnAjax.method_4(
				url_join("course/staff"), {},
				"post",
				function(data) {
					console.log(data);
					oSelect.each(function() {
						$.createMulSelect(data.data, $(this));
					});
				}
			);
		},
		/*
		 渲染多功能下拉菜单
		@data {array} 主要数据
		@param container {object} 下拉菜单select元素对象界节点  jq
		 * */
		createMulSelect: function(data, container) {
			container.html("");
			$.each(data, function(i, v) {
				var optgroup = '<optgroup label="' + v.name + '"  data-id="' + v.id + '">' +
					createOption(v.staff) +
					'</optgroup>';
				container.append($(optgroup));
			});

			/*
			 创建option
			 @param {array} arr staff数组
			 @return {string} 
			 * */
			function createOption(arr) {
				var options = "";
				$.each(arr, function(k, e) {
					options += '<option value="' + e.id + '" style="font-weight: normal;color: blue;">' + e.username + '</option>';
				});
				return options;
			}
		},

	
		//监听教室change事件
		classroomListEvent: function() {
			$("body").on("change","#classroom2", function() {
				//获取学校节课时，进而加载节次，老师和科组下拉菜单
				$.getNode();
//				//查询,显示课程表
//				$.showTable();
			});
		},
		
		//查询,显示课程表
		showTable: function() {
			fnAjax.method_4(
				url_join("schedule-v2/show"), 
				{
					gid:$("#grade").val(),
					classroom_id:$("#classroom2").val(),
				},
				"post",
				function(data) {
					console.log("查询接口的数据",data);
					//数据库已经保存了,查看加载非走班表						
					if(data.data.length > 0){
						$(".btn-save").attr("data-type","update");
						$.each(data.data, function(i,v) {
							$(".td-goClass").each(function(){
								if($(this).attr("data-node") == v.class_hour && $(this).attr("data-week") == v.day){
									$(this).find(".classGroupList").val(v.class_group_id);
									$(this).find("._teacherList").val(v.staff_id);
									$(this).attr("data-id",v.id);
								}
							});
						});
						//监听所有下拉框进行标示是否改变
						$.classGroupSelectEvent();
					}
					else{
						$(".btn-save").attr("data-type","create");
					}
					$.goClass_filterFuntion($(".classGroupList"),aClassGroupSatff);
				}
			);
			
		},
		//新增，更新入口（新增走班，非走班，编辑走班，非走班表）
		savePort: function() {
			$(".btn-save").on("click", function() {
				if($(this).attr("data-type") == "create"){//新增
					$.goClass_table_create();
				}else{//更新
					$.goClass_table_update();
				}
			});
		},
		//新增非走班表
		addNoGoClassTable: function() {
			$(".kemuList").each(function(){
				$(this).find("option:selected").attr("selected","selected");
			});
			//非走班表的数据模型
			var mainData = {
//				content:tem,//表格 的html片段
				content:$(".tableBox").html(),//表格 的html片段
				gid: $("#grade").val(), //年级id
				schedule_v1 : [ //各个班级每周课程数据
					
				]
			};
			mainData.schedule_v1  = [];
			$.each(aClass, function(i, v) {
				mainData.schedule_v1 .push({
					"class_id": v.id,
					"dayList": {
						"monday": [],
						"tuesday": [],
						"wednesday": [],
						"thursday": [],
						"friday": []
					}
				})
			});
		
			$.each(mainData.schedule_v1 , function(i,v) {
				$(".kemu-td").each(function(k){
					if($(this).attr("data-class-id") == v.class_id){
						if($(this).attr("data-week") == "1"){
							v.dayList.monday.push({
								"node":$(this).attr("data-node"),
								"classGroupId":$(this).find("select").val()
							});
						}
						else if($(this).attr("data-week") == "2"){
							v.dayList.tuesday.push({
								"node":$(this).attr("data-node"),
								"classGroupId":$(this).find("select").val()
							})
						}
						else if($(this).attr("data-week") == "3"){
							v.dayList.wednesday.push({
								"node":$(this).attr("data-node"),
								"classGroupId":$(this).find("select").val()
							});
						}
						else if($(this).attr("data-week") == "4"){
							v.dayList.thursday.push({
								"node":$(this).attr("data-node"),
								"classGroupId":$(this).find("select").val()
							});
						}
						else if($(this).attr("data-week") == "5"){
							v.dayList.friday.push({
								"node":$(this).attr("data-node"),
								"classGroupId":$(this).find("select").val()
							});
						}
					}
				});
			});
			console.log(mainData.schedule_v1);
			/**
			 @request html {string} html片段
			 @request gid {number} 年级id
			 @schedule_v1 {[object]} 各个班级每周课程数据
			 * */
			fnAjax.method_4(
				url_join("schedule-v1/create"),
				mainData,
				"post",
				function(data){
					layer.msg("操作成功",{time:1500},function(){
						location.reload();
					});
				}
			);
		},		
		//查看回显非走班表数据
		backNoGoClassTable:function(data){
			console.log(data);
			$.each(data, function(i,v) {
				$(".class-td").each(function(k){
					if(v.class_id == $(this).attr("data-id")){
						dispose(v.dayList,$(this).siblings("td"));
					}
				})
			});
			function dispose(oData,container){
				s_s(oData.friday.list,container,"5");
				s_s(oData.thursday.list,container,"4");
				s_s(oData.wednesday.list,container,"3");
				s_s(oData.tuesday.list,container,"2");
				s_s(oData.monday.list,container,"1");
			}
			/**
			 @param {array} aData 每天的数据
			 @param {object} container 主要选择器
			 @param {number} nDataWeek 周几
			 * */
			function s_s(aData,container,nDataWeek){
				$.each(aData, function(i,v) {
					container.each(function(){
						if(v.node == $(this).attr("data-node") && $(this).attr("data-week") == nDataWeek){
							$(this).find("select").val(v.classGroupId);
						}
					});
				});
			}
		},
		
		/**
		 更新非走班表
		 @param {array} aData 后台数据
		 * */
		editNoGoClassTable:function(aData){
			/*
			 * {
					"class_id": 12,
					"dayList": {
						"monday": [
							{
								"node":1,
								"classGroupId":12
							}
						],
						"tuesday": [],
						"wednesday": [],
						"thursday": [],
						"friday": []
					}
				}
			*/
			var aChange = [];
			$(".changeTd").each(function(){
				aChange.push({
					"data_week":$(this).attr("data-week"),
					"node":$(this).attr("data-node"),
					"class_id":$(this).attr("data-class-id"),
					"classGroupId":$(this).find("select").val()
				});
			});	
			var aChange2 = $.getSameVal(aChange, "class_id");
			var aChange3 = [];
			$.each(aChange2, function(i,v) {
				aChange3.push({
					"class_id":v[0].class_id,
					"dayList":{
						"monday": [],
						"tuesday": [],
						"wednesday": [],
						"thursday": [],
						"friday": []
					}
				})
			});
			
			$.each(aChange3, function(i,v) {
				$(".changeTd").each(function(){
					if(v.class_id == $(this).attr("data-class-id") && $(this).attr("data-week") == "1"){
						v.dayList.monday.push({
							"node":$(this).attr("data-node"),
							"classGroupId":$(this).find("select").val()
						});
					}
					if(v.class_id == $(this).attr("data-class-id") && $(this).attr("data-week") == "2"){
						v.dayList.tuesday.push({
							"node":$(this).attr("data-node"),
							"classGroupId":$(this).find("select").val()
						});
					}
					if(v.class_id == $(this).attr("data-class-id") && $(this).attr("data-week") == "3"){
						v.dayList.wednesday.push({
							"node":$(this).attr("data-node"),
							"classGroupId":$(this).find("select").val()
						});
					}
					if(v.class_id == $(this).attr("data-class-id") && $(this).attr("data-week") == "4"){
						v.dayList.thursday.push({
							"node":$(this).attr("data-node"),
							"classGroupId":$(this).find("select").val()
						});
					}
					if(v.class_id == $(this).attr("data-class-id") && $(this).attr("data-week") == "5"){
						v.dayList.friday.push({
							"node":$(this).attr("data-node"),
							"classGroupId":$(this).find("select").val()
						});
					}
				});
			});
			console.log(aChange3);
		
			fnAjax.method_4(
				url_join("schedule-v1/update"),
				{
					content:$(".tableBox").html(),//表格 的html片段
					gid: $("#grade").val(), //年级id
					schedule_v1 : aChange3
				},
				"post",
				function(data){
//					console.log(data);
					layer.msg("操作成功");
				}
				
			);
		
		},
		//监听科目下拉框
		classGroupSelectEvent:function(){
			$("._teacherList").each(function(){
				$(this).attr("data-init",$(this).val());
			});
			$("body").on("change","._teacherList",function(){
				$(this).find("option:selected").attr("selected","selected");
				if($(this).find("option:selected").attr("value") == $(this).attr("data-init")){
					$(this).parents("td").removeClass("changeTd");
				}else{
					$(this).parents("td").addClass("changeTd");
				}
			});
		},
		//监听所有下拉框change事件
		allSelectChangeEvent:function(){
			$("body").on("change","select",function(){
				$(this).find("option:selected").attr("selected","selected").siblings("option").removeAttr("selected");
			});
		},
		
	});
})(jQuery, window, document);